<?php

class AdmRegistro extends TPage {

    public function onLoad($param) {
        parent::onLoad($param);
        if (!$this->IsPostBack) {
            $this->actualizarIntefaz();
        }
    }

    private function actualizarIntefaz() {
        $arr = $this->obtenerDatos();
        $this->iniciarControles($arr);
        $this->mostrarMensaje();
    }

    private function obtenerDatos() {
        $arg = $this->Request["a"];
        if (!Util::isNullOrEmpty($arg)) {
            $id = Util::desencriptarUrl($arg, "id");
            $this->setViewState("id", $id);
            $oComentarioBLL = new ComentarioBLL();
            $arr = $oComentarioBLL->obtenerPorId($id);
        } else {
            $this->setViewState("id", "-1");
            $arr = array();
        }

        return $arr;
    }

    private function iniciarControles($arr) {
        $id = $this->getViewState("id");

        if (count($arr) > 0) {
            $oComentario = new Comentario();
            $oComentario = $arr;

            $strMensaje = $oComentario->getMensaje();
            $intIdEstado = $oComentario->getIdEstado();
            $intIdTipoComentario = $oComentario->getIdTipoComentario();
            $strParaTitulo = $oComentario->getParaTitulo();
            $strParaMensaje = $oComentario->getParaMensaje();
        } else {
            $strMensaje = "";
            $intIdEstado = Combo::VALOR_SELECCIONE;
            $intIdTipoComentario = -1;
            $strParaTitulo = "";
            $strParaMensaje = "";
        }

        switch ($intIdTipoComentario) {
            case Tipo_comentario::ESCORT:
                $tipoComentario = "ESCORT";
                break;
            case Tipo_comentario::ENTREVISTA:
                $tipoComentario = "ENTREVISTA";
                break;
            case Tipo_comentario::NOTICIA:
                $tipoComentario = "NOTICIA";
                break;
            case Tipo_comentario::RELATO:
                $tipoComentario = "RELATO";
                break;
        }
        $this->ltTitulo->Text = (($id == "-1") ? "Nuevo" : "Modificar") . " Comentario " . $tipoComentario;

        $this->txtMensaje->Text = $strMensaje;
        $this->ddlEstado->asignarSelectedValue($intIdEstado);

        switch ($intIdTipoComentario) {
            case Tipo_comentario::ESCORT:
                $this->pnlTitulo->Visible = true;
                $this->pnlMensaje->Visible = false;
                $this->lblTitulo->Text = "Escort";
                $this->lblTituloContenido->Text = $strParaTitulo;
                break;
            default:
                $this->pnlTitulo->Visible = true;
                $this->pnlMensaje->Visible = true;
                $this->lblTitulo->Text = "T&iacute;tulo";
                $this->lblTituloContenido->Text = $strParaTitulo;
                $this->lblMensaje->Text = "Contenido";
                $this->lblMensajeContenido->Text = Util::reemplazarTextoPorEmoticon($strParaMensaje);
                break;
        }

        $arrEliminar = array(
            "idRegistro" => $id,
            "urlAjax" => "Comentario.Ajax",
            "opcionAjax" => "Eliminar",
            "urlRespuesta" => "Comentario.AdmListar",
            "parametrosUrlRespuesta" => array(
                "tipoComentario" => $intIdTipoComentario
            )
        );
        $opcionesEliminar = Util::jsonOpcionesEliminar($arrEliminar);
        $this->btnEliminar->Visible = ($id == "-1") ? false : true;
        $this->btnEliminar->Attributes->Add("onclick", "eliminarRegistro(" . $opcionesEliminar . ")");

        $arg = Util::encriptarUrl(array("tipoComentario" => $intIdTipoComentario));
        $this->btnVolver->NavigateUrl = "index.php?page=Comentario.AdmListar&a=" . $arg;
    }

    private function mostrarMensaje() {
        $arg = $this->Request["a"];
        if (!Util::isNullOrEmpty($arg)) {
            $tipoMensaje = Util::desencriptarUrl($arg, "tipoMensaje");
            $mensaje = Util::desencriptarUrl($arg, "mensaje");

            if (!Util::isNullOrEmpty($mensaje)) {
                Util::mostrarMsj($this->Page, "da-ex-val-error", $mensaje, $tipoMensaje);
            }
        }
    }

    public function btnGrabarClick($sender, $param) {
        $id = $this->getViewState("id");
        $oComentarioBLL = new ComentarioBLL();
        $arr = $oComentarioBLL->obtenerPorId($id);
        $oComentario = new Comentario();
        $oComentario = $arr;
        $oComentario->setId($id);
        $oComentario->setMensaje($this->txtMensaje->Text);
        $oComentario->setIdEstado($this->ddlEstado->obtenerSelectedValue());
        $mensaje = "";
        $tipoMensaje = "";

        if ($id == "-1") {
            $resultado = $oComentarioBLL->grabar($oComentario);
            if (is_numeric($resultado)) {
                $id = $resultado;
            }
        } else {
            $resultado = $oComentarioBLL->editar($oComentario);
        }

        if (!Util::isNullOrEmpty($resultado) && !is_numeric($resultado)) {
            $tipoMensaje = Util::MENSAJE_ERROR;
            $mensaje = $resultado;
        } else {
            $tipoMensaje = Util::MENSAJE_OK;
            $mensaje = "El registro fue grabado con &eacute;xito";
        }

        $arg = Util::encriptarUrl(array(
                    "id" => $id,
                    "tipoMensaje" => $tipoMensaje,
                    "mensaje" => $mensaje
                        )
        );
        $this->Response->Redirect("index.php?page=Comentario.AdmRegistro&a=" . $arg);
    }

}

?>
